const myAxios = function (config) {
  return new Promise((resovle, reject) => {
    const { method, url, data, params } = config

    const xhr = new XMLHttpRequest()

    if (method.toUpperCase() === 'GET') {
      const str = setParams(params)
      xhr.open('get', params ? url + '?' + str : url)
      xhr.send()
    } else {
      xhr.open('POST', url)

      const flag =
        Object.prototype.toString.call(payload.data) === '[object Object]'

      // console.log(flag)

      // 设置请求头格式
      xhr.setRequestHeader(
        'Content-Type',
        flag ? 'application/json' : 'application/x-www-form-urlencoded'
      )
      //调用send函数
      xhr.send(flag ? JSON.stringify(payload.data) : payload.data)
    }

    xhr.onreadystatechange = function () {
      if (xhr.readyState === 4) {
        if (xhr.status >= 200 || xhr.status < 300) {
          resovle(JSON.parse(xhr.responseText))
        } else {
          reject(xhr.status)
        }
      }
    }
  })
}

//声明一个专门处理参数格式的函数
function setParams(obj) {
  //准备一个新数组
  let arr = []
  for (let key in obj) {
    //用数组来接收每一项
    arr.push(key + '=' + obj[key])
  }

  // 把数组转成字符串，并且用&符号隔开
  //   console.log(arr.join('&'))
  return arr.join('&')
}
